package org.zhuzx.util;

/**
 * 业务性断言器，若断言失败则抛出BizException。<br>
 * 相对于Spring的Assert工具类的区别：Spring.Aseert抛出的异常会被当作程序异常，由全局异常处理器打印错误堆栈，
 * 这样会导致error日志中出现一大堆的错误堆栈，但这些内容实际是不需要开发人员处理的，
 * 堆积在error日志中会对以后排查问题造成严重的干扰。<br>
 * 而这个BizAssert抛出的BizException属于业务错误，直接捕获返回，不会在error日志中灌水，
 * 当然前提是需要异常处理器的配合。
 * @author zhuzx 2022/7/7
 */
public class BizAssert {

	public static void notNull(Object object, String errMsg) {
		if (object == null) {
			throwException(errMsg);
		}
	}

	public static void notBlank(String str, String errMsg) {
		if (GeneralUtil.isBlank(str)) {
			throwException(errMsg);
		}
	}

	public static void notAllow(boolean isHappen, String errMsg) {
		if (isHappen) {
			throwException(errMsg);
		}
	}

	public static void mustTrue(boolean expression, String errMsg) {
		if (!expression) {
			throwException(errMsg);
		}
	}

	private static void throwException(String errMsg) {
		throw new BizException(errMsg);
	}

}